home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 008 / 3drot.arc / 3DROT.BAS (.txt)
Encoding:
GW-BASIC  |  1987-04-07  |  2.6 KB  |  114 lines

  1. 5  GOTO 500
  2. 25  REM DRAW
  3. 26  CLS
  4. 30  PSET (TX(1),TY(1)),1
  5. 35  FOR Q=2 TO 7
  6. 40  LINE -(TX(Q),TY(Q)),1
  7. 45  NEXT Q
  8. 50   LINE (TX(2),TY(2))-(TX(7),TY(7)),1
  9. 55  LINE (TX(1),TY(1))-(TX(5),TY(5)),1
  10. 60  LINE (TX(3),TY(3))-(TX(1),TY(1)):LINE -(TX(6),TY(6)),1
  11. 65  LINE (TX(4),TY(4))-(TX(1),TY(1)):LINE -(TX(7),TY(7))
  12. 70  LINE (TX(8),TY(8))-(TX(9),TY(9)),1
  13. 75  LINE -(TX(10),TY(10)):LINE -(TX(11),TY(11)):LINE -(TX(8),TY(8))
  14. 80  LINE -(TX(12),TY(12)):LINE -(TX(13),TY(13)):LINE -(TX(14),TY(14))
  15. 85  LINE -(TX(15),TY(15)):LINE -(TX(12),TY(12))
  16. 90  LINE (TX(13),TY(13))-(TX(9),TY(9)):LINE (TX(14),TY(14))-(TX(10),TY(10))
  17. 95  LINE (TX(15),TY(15))-(TX(11),TY(11)),1
  18. 100  LINE (TX(16),TY(16))-(TX(17),TY(17))
  19. 105  LINE (TX(18),TY(18))-(TX(16),TY(16)):LINE -(TX(19),TY(19)),1
  20. 110  LINE (TX(20),TY(20))-(TX(21),TY(21)),1
  21. 115  LINE -(TX(23),TY(23)):LINE -(TX(24),TY(24)),1
  22. 120  LINE (TX(22),TY(22))-(TX(25),TY(25)),1
  23. 130  GOTO 850
  24. 499  ---INITILIZING---
  25. 500  SCREEN 2:CLS:KEY OFF
  26. 505  PI=3.14152
  27. 510  WINDOW SCREEN(-75,-75)-(75,75)
  28. 514  INPUT "BY WHAT ANGLE SHOULD I INCREMENT (EX: PI/4) ";ROT
  29. 516  CLS
  30. 520  N=25
  31. 522  AP=0:AR=0:AY=0
  32. 530  DIM X(N),Y(N),Z(N),TX(N),TY(N)
  33. 532  KEY (11) ON:KEY (14) ON:KEY (12) ON:KEY (13) ON
  34. 535  KEY (1) ON:KEY (2) ON
  35. 540  FOR Q=1 TO N
  36. 550  READ X(Q),Y(Q),Z(Q)
  37. 560  NEXT Q
  38. 570  GOSUB 800
  39. 600  ON KEY (11) GOSUB 1000
  40. 620  ON KEY (14) GOSUB 2000
  41. 630  ON KEY (12) GOSUB 3000
  42. 640  ON KEY (13) GOSUB 4000
  43. 650  ON KEY (1) GOSUB 5000
  44. 660  ON KEY (2) GOSUB 6000
  45. 750  GOTO 600
  46. 790  END
  47. 800  FOR Q=1 TO N
  48. 810  TX(Q)=X(Q)+Z(Q)*SIN(PI/6)
  49. 820  TY(Q)=Y(Q)+Z(Q)*COS(PI/6)
  50. 830  NEXT Q
  51. 840  GOTO  25
  52. 850  RETURN
  53. 999  REM PITCH UP
  54. 1000  AP=AP+ROT
  55. 1050  FOR R= 1 TO N
  56. 1060  X1=X(R):Y1=Y(R):Z1=Z(R)
  57. 1100  X(R)=X1
  58. 1110  Y(R)=Y1*COS(AP)+Z1*(-SIN(AP))
  59. 1120  Z(R)=Y1*SIN(AP)+Z1*COS(AP)
  60. 1130  NEXT R
  61. 1150  GOSUB 800
  62. 1160  RETURN
  63. 1999  --REM PITCH DOWN--
  64. 2000  AP=AP-ROT
  65. 2050  FOR R= 1 TO N
  66. 2055  X1=X(R):Y1=Y(R):Z1=Z(R)
  67. 2100  X(R)=X1
  68. 2110  Y(R)=Y1*COS(AP)+Z1*(-SIN(AP))
  69. 2120  Z(R)=Y1*SIN(AP)+Z1*COS(AP)
  70. 2130  NEXT R
  71. 2140  GOSUB 800
  72. 2150  RETURN
  73. 2999  --YAW LEFT--
  74. 3000  AY=AY-ROT
  75. 3100  FOR S=1 TO N
  76. 3110  X1=X(S):Y1=Y(S):Z1=Z(S)
  77. 3150  X(S)=X1*COS(AY)+Z1*SIN(AY)
  78. 3200  Y(S)=Y1
  79. 3250  Z(S)=X1*(-SIN(AY))+Z1*COS(AY)
  80. 3300  NEXT S
  81. 3400  GOSUB 800
  82. 3500  RETURN
  83. 3999  REM --YAW RIGHT--
  84. 4000  AY=AY+ROT
  85. 4100  FOR S=1 TO N
  86. 4110  X1=X(S):Y1=Y(S):Z1=Z(S)
  87. 4150  X(S)=X1*COS(AY)+Z1*SIN(AY)
  88. 4200  Y(S)=Y1
  89. 4250  Z(S)=X1*(-SIN(AY))+Z1*COS(AY)
  90. 4300  NEXT S
  91. 4400  GOSUB 800
  92. 4500  RETURN
  93. 4999  REM --ROLL LEFT--
  94. 5000  AR=AR+ROT
  95. 5100  FOR S=1 TO N
  96. 5200  X1=X(S):Y1=Y(S):Z1=Z(S)
  97. 5250  X(S)=X1*COS(AR)+Y1*SIN(AR)
  98. 5300  Y(S)=X1*(-SIN(AR))+Y1*COS(AR)
  99. 5350  Z(S)=Z1
  100. 5400  NEXT S
  101. 5500  GOSUB 800
  102. 5555  RETURN
  103. 5999  REM --ROLL RIGHT--
  104. 6000  AR=AR-ROT
  105. 6100  FOR S=1 TO N
  106. 6200  X1=X(S):Y1=Y(S):Z1=Z(S)
  107. 6250  X(S)=X1*COS(AR)+Y1*SIN(AR)
  108. 6300  Y(S)=X1*(-SIN(AR))+Y1*COS(AR)
  109. 6350  Z(S)=Z1
  110. 6400  NEXT S
  111. 6500  GOSUB 800
  112. 6555  RETURN
  113. 9000  DATA 0,0,0,5,30,-10,15,30,0,5,30,10,-5,30,10,-15,30,0,-5,30,-10,20,30,-15, 20,30,15,-20,30,15,-20,30,-15,20,-20,-15,20,-20,15,-20,-20,15,-20,-20,-15,35,0, 35,45,0,35,35,0,45,35,10,35,0,-20,-10,-10,-20,-10,-10,-20,0,-10,-20,10,0,-20,10,-5,-20,0
  114.